import React, { Component } from 'react'

export default class ComMid extends Component {
    constructor() {
        super();
        this.state = {
            money: 1
        }
        console.log('1-constructor');
    }
    static getDerivedStateFromProps(p) {
        // 从Props中派生出来State---根据props修改state.类似Object.assign（）合并对象
        console.log('2-getDerivedStateFromProps');
        console.log(p);
        // 不需要修改时就返回null 需要修改时就写一个对象
        return null
    }
    componentDidMount() {
        // 组件已经渲染完成
        console.log('3-componentDidMount');
    }
    shouldComponentUpdate() {// 可以作为性能优化的方式
        // 组件是否应该更新？返回一个布尔值
        // if(xxx) {
        //     return false
        // }else {
        //     return true
        // }
        return true
    }
    getSnapshotBeforeUpdate(oldProps, oldState) { // 系统注入的两个参数，老得数据
        // 此时数据已经更新，页面即将更新。报错此时的状态
        console.log(oldProps);
        console.log(oldState);
        console.log('=========');
        console.log(this.props);
        console.log(this.state);
        return {
            aa: 111
        }
    }
    componentDidUpdate(oldProps, oldState, snapShot) {
        // 组件已经更新完成
        console.log(oldProps);
        console.log(oldState);
        console.log(snapShot);
    }
    change() {
        this.setState({
            money: 99999
        })
    }
    componentWillUnmount() {
        console.log('我在演讲时被销毁了。。。');
    }
    render() {
        return (
            <div>
                <p>我是ComBig的子组件</p>
                <p>父组件的数据：{this.props.age}</p>
                <button onClick={()=>this.change()}>{this.state.money}</button>
            </div>
        )
    }
}
